home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SunSoft Catalyst CDWARE 1996 May to August
/
Catalyst CDWARE 1996 May to August.iso
/
.products
/
Apogee
/
_text
/
ProductInfo.txt
< prev
Wrap
Text File
|
1996-02-16
|
9KB
|
169 lines
The products offered by Apogee Software Inc. are:
- Apogee-C, a high-performance C compiler
- Apogee-C++, a high-performance C++ compiler
- Apogee-FORTRAN 77, a high-performance FORTRAN compiler
- Apogee-Fortran 90, a high performance Fortran 90 compiler
- SP/MP KAP-C, optimizing C preprocessors
- SP/MP KAP-FORTRAN, optimizing FORTRAN preprocessors
The Apogee compilers adhere to relevant language and system standards,
including those determined by ANSI, ISO, and SPARC International. By working
within the open marketplace, we are able to offer products which are
compatible with existing products, but which provide exceptional performance.
The KAP products are available in either Single Processor (SP) or
Multi-Processor versions (MP). The MP versions are capable of
automatically detecting parallelism in code and/or arranging for
multiple processors to be applied simultaneously to solve the problem.
Q. Is it true that Sun's performance announcement of the SPARCstation 5,
10, and 20 did didn't use SunPro compilers?
A. That is correct. Sun Microsystems chose to announce performance based
on Apogee's compilers, since this substantially boosted their benchmark
results. For example, the SPECint92 and SPECfp92 ratings for Apogee's
compilers are 20-30% higher than the ratings for the SunPro SC2.0.1
release of compilers running on identical SPARCstation 10's, and 8-12%
higher than SunPro's SC3.0 (depending on the exact system
configuration). Other SPARC system vendors, including Cray Research
Superservers, Solbourne, Tatung, and Axil Workstations, depend on
Apogee's compilers to get the most out of their systems.
Q. How was Apogee able to achieve this performance?
A. Apogee's compilers were developed from a clean sheet of paper over the
past few years. This allowed us to design a compiler specifically
suited to RISC architectures like SPARC. We were also able to combine
state of the art compiler optimization technology with more traditional
optimization methods, enabling Apogee's compilers to achieve
significantly higher levels of optimization than compilers employing
only one general optimization scheme.
In addition, we teamed with Kuck & Associates Inc., which has brought
its expertise in the supercomputing arena to the SPARC market. By
working closely with them, we are able to achieve a symbiosis which
allows us to focus on what we do best, while letting them focus on
what they do best. The result? A significant performance benefit to
you, the customer.
Q. In what ways does the RISC architecture affect compiler design?
A. The RISC concept has always relied on trading off functionality
between the compiler and the hardware. CISC systems make the
compiler's job easy by offering complex instructions and addressing
modes which closely match high-level language constructs. RISC
designs, however, break those high-level language constructs into a
series of simpler instructions. Each of the instructions runs much
faster. However, unless the compiler is able to reduce the number of
instructions, the performance advantage is diminished.
Apogee's compilers are specifically designed with the RISC model in
mind. Instead of focusing on proper selection of a complicated
addressing mode, we focus on eliminating redundancies which result
from the larger number of simpler instructions. Internally we
represent the code much as it will eventually appear in the assembly
file; the optimizations are directly applied to SPARC-like code. This
is one of the advantages of the clean sheet design--we have no CISC
baggage left over. Designed from the very start to efficiently and
effectively handle RISC architectures, our compilers don't have to
convert to or from CISC instructions at some point in the compiler.
Q. Specifically what optimizations do you do?
A. We have woven the standard "textbook" optimizations into more
sophisticated optimizations which originally appeared in the
supercomputer arena. Our proprietary technology permits us to take
advantage of the strengths of classic "loop-sensitive" optimization as
well as the "loop-insensitive" methods developed over the last decade.
Among the standard optimizations, we perform constant folding and
algebraic transformations, elimination of common subexpressions (both
locally and globally), propagation of constants (both locally and
globally), and elimination of copies and dead code (locally and
globally). We do global backward and forward code motion in addition
to extensive strength reduction and reassociation. We eliminate
induction variables, unroll loops, and eliminate tail recursion where
possible. We apply sophisticated memory reference analysis which
allows us to maximize the allocation of variables to registers while
minimizing memory traffic. Our register allocation uses a priority-
based graph coloring algorithm, and we delay allocation of registers
within a block until after reordering the instructions for maximum
performance, thereby permitting greater freedom in matching the
specific instruction sequence with the hardware's capabilities. This
allows us to take maximum advantage of the complex pipelines of the
latest SPARC processors.
In addition to the above intra-procedural optimizations, we have a rich
set of inter-procedural optimizations. We have extended our memory
analysis to take account of which specific variables and which
specific registers are read and/or modified across calls, and we fold
called functions inline.
Q. You have good results on the SPEC benchmarks, but what does that mean
for my application?
A. Together these optimizations allow us to achieve maximum performance on
real applications, not just benchmarks. Certainly the optimizations
are useful on benchmarks; we don't deny that. But the general nature
of the algorithms we use are also able to recognize opportunities for
optimization in real-world programs. We do not have to rely on clever
schemes to recognize benchmarks or pattern match on particular input
sequences to achieve our performance. Even as the code gets more
complex, we are still able to optimize extremely well. Many of our
competitors cannot make that claim.
Q. I'm involved in numerical modeling. I want to get the most out of my
workstation. Can you help?
A. We think so. Many of the optimization techniques used by Apogee and
Kuck & Associates were first applied in the supercomputing world,
where performance has always been aggressively sought. The
optimizations we perform are at their best in that environment; this
is where we are especially strong against our competition. If you are
seeking performance, we strongly encourage you to look at our
compilers.
Q. If I use Apogee's compilers, will I have to change my source code?
A. Apogee has always striven to adhere to industry standards. We are
committed to the open marketplace, and the standards which exist
therein. Our compilers conform to the standards set by various
government entities (eg. ANSI, ISO, MIL-STD), as well as de facto
standards set by the marketplace (eg. VMS extensions, Kernighan and
Ritchie dialect, pcc). If your source code also adheres to these
standards, no changes should be required to begin using Apogee's
compilers. Our sophisticated warning messages may help you find bugs
which were undetected, however, so you may find that you want to make
changes!
Q. Will I need to change existing tools to use your compilers?
A. Because Apogee conforms to all of the SPARC Architecture
specifications, you can continue using all of your old tools with our
compilers. We do, however, verify compatibility with a number of tools
which, in our opinion, are outstanding products. These include the
TotalView debugger from BBN, Sentinel from AIB Software, the gdb
debugger from GNU, and the SNiFF+ development environment from
takeFive, among others.
Q. Can you tell me more about Apogee?
A. Apogee Software is a privately held company specializing in the design,
development, and production of highly optimizing compilers for RISC
systems. The company founders have decades of experience in
developing compilers, largely in the supercomputing and mainframe
markets. The focus on performance in the RISC workstation marketplace
has given us the opportunity to bring our sophisticated technology to
a broader audience.
Q. And Kuck & Associates?
A. Kuck & Associates are experts in the field of automatic optimization
tools. Their main product is a preprocessor which, by performing
sophisticated data dependence analysis, is able to automatically
uncover parallel, vector, and cache management opportunities within
programs. After analyzing an application, KAP chooses the most
efficient methods for executing the program on the SPARC architecture.